
package MusicGroup_Management;

import Artist_Management.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import Main_menu.MainMenu;


public class MusicGroupTable extends javax.swing.JFrame {
    static boolean FLAG1 = true;//Μεταβλητή που χρησιμοποιείται για την διάκριση των ενεργειών "Εισαγωγή νέου Καλλιτέχνη"
    //και "Επεξεργασία Καλλιτέχνη" κατά την αποθήκευση.
     static boolean DELETE = true;//Μεταβλητή που χρησιμοποιείται για την διάκριση των ενεργειών "Διαγραφή νέου Καλλιτέχνη"
    //και "Επεξεργασία Καλλιτέχνη" κατά την αποθήκευση.
    static String MusicGroupName;//Μεταβλητή που περιέχει κάθε φορά την επωνυμία του γκρούπ που επιλέγουμε για επεξεργασία ή διαγραφή.
    
    
    //Μέθοδος για την εμφάνιση των Μουσικών Συγκροτημάτων στο JTable "MusicGroupTable".
    final void FillTable(){
        try {
        String url = "jdbc:derby://localhost:1527/Radiostation_DB";
        String username = "erg3";
        String password = "erg3";
        
        Connection con = DriverManager.getConnection(url, username, password);
        Statement stat = con.createStatement();
        String Query = "SELECT * FROM MUSICGROUP";
        
        ResultSet rs = stat.executeQuery(Query);
        
        DefaultTableModel DTM = new DefaultTableModel();
        DTM.addColumn("ΕΠΩΝΥΜΙΑ");
        DTM.addColumn("ΗΜΕΡΟΜΗΝΙΑ ΔΗΜΙΟΥΡΓΙΑΣ");
        
        MusicGroupTable.setModel(DTM);
        
        
        while (rs.next()){
            
            Object [] ob = {rs.getString("NAME") , rs.getString("FORMATIONDATE")};
            DTM.addRow(ob);
        }
        
        
        } catch(Exception e) {
        /* Εμφάνιση μηνύματος σφάλματος */
        System.out.println(e); 
        JOptionPane.showMessageDialog(null, "Αποτυχία σύνδεσης με τη ΒΔ!", "ERROR", JOptionPane.ERROR_MESSAGE);
        /* Αναγκαστικό κλείσιμο προγράμματος */
        }
    }
    
    
    public MusicGroupTable() {
        initComponents();
        setLocationRelativeTo(null);//για την εμφάνιση του παραθύρου στο κέντρο
        
        FillTable();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        Radiostation_ProjectPUEntityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("Radiostation_ProjectPU").createEntityManager();
        artistQuery = java.beans.Beans.isDesignTime() ? null : Radiostation_ProjectPUEntityManager.createQuery("SELECT a FROM Artist a");
        artistList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : artistQuery.getResultList();
        artistQuery1 = java.beans.Beans.isDesignTime() ? null : Radiostation_ProjectPUEntityManager.createQuery("SELECT a FROM Artist a");
        artistList1 = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : artistQuery1.getResultList();
        artistQuery2 = java.beans.Beans.isDesignTime() ? null : Radiostation_ProjectPUEntityManager.createQuery("SELECT a FROM Artist a");
        artistList2 = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : artistQuery2.getResultList();
        jScrollPane1 = new javax.swing.JScrollPane();
        MusicGroupTable = new javax.swing.JTable();
        InsertNewGroupBtn = new javax.swing.JButton();
        EditGroupBtn = new javax.swing.JButton();
        ExitBtn = new javax.swing.JButton();
        ErrorMessage = new javax.swing.JLabel();
        DeleteGroupBtn = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Πίνακας Συγκροτημάτων");
        setResizable(false);

        MusicGroupTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "ΕΠΩΝΥΜΙΑ", "ΗΜΕΡΟΜΗΝΙΑ ΔΗΜΙΟΥΡΓΙΑΣ"
            }
        ));
        jScrollPane1.setViewportView(MusicGroupTable);

        InsertNewGroupBtn.setText("Εισαγωγή Νέου Συγκροτήματος");
        InsertNewGroupBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                InsertNewGroupBtnActionPerformed(evt);
            }
        });

        EditGroupBtn.setText("Επεξεργασία Συγκροτήματος");
        EditGroupBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                EditGroupBtnActionPerformed(evt);
            }
        });

        ExitBtn.setText("Έξοδος");
        ExitBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ExitBtnActionPerformed(evt);
            }
        });

        ErrorMessage.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        ErrorMessage.setForeground(new java.awt.Color(255, 0, 0));

        DeleteGroupBtn.setText("Διαγραφή Συγκροτήματος");
        DeleteGroupBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DeleteGroupBtnActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(67, 67, 67)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(InsertNewGroupBtn)
                        .addGap(94, 94, 94)
                        .addComponent(EditGroupBtn)
                        .addGap(119, 119, 119)
                        .addComponent(DeleteGroupBtn)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(ExitBtn))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(ErrorMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 495, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(454, 454, 454))
                    .addComponent(jScrollPane1))
                .addContainerGap(76, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 334, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(ErrorMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(InsertNewGroupBtn)
                    .addComponent(EditGroupBtn)
                    .addComponent(ExitBtn)
                    .addComponent(DeleteGroupBtn))
                .addGap(23, 23, 23))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void InsertNewGroupBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_InsertNewGroupBtnActionPerformed
        FLAG1 = true;//Για την ενεργοποίηση της καταχώρησης νέου Συγκροτήματος.
        DELETE = false; // για να μην είναι δυνατή η διαγραφή καλλιτέχνη
        new MusicGroupManagementForm().setVisible(true);
        dispose();

    }//GEN-LAST:event_InsertNewGroupBtnActionPerformed

    private void ExitBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExitBtnActionPerformed
        new MainMenu().setVisible(true);
        dispose();
    }//GEN-LAST:event_ExitBtnActionPerformed

    private void EditGroupBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EditGroupBtnActionPerformed
        FLAG1 = false;
        DELETE = false; // για να μην είναι δυνατή η διαγραφή καλλιτέχνη
           int selectedRow = -1;//αρχικοποίηση μεταβλητής για να μην περιέχει προηγούμενη τιμή επιλογής.
        selectedRow = MusicGroupTable.getSelectedRow();
        if (selectedRow != -1){
            MusicGroupName = String.valueOf(MusicGroupTable.getValueAt(selectedRow, 0));
            MusicGroupManagementForm GroupForm = new MusicGroupManagementForm();
            GroupForm.InsertValuesToForm();
            GroupForm.setVisible(true);
            dispose();
        }
        else
            //Μήνυμα για την περίπτωση που δεν επιλεχθεί κάποιος Καλλιτέχνης.
            ErrorMessage.setText("Πρέπει να επιλέξετε ένα Συγκρότημα από τον παραπάνω πίνακα");
    }//GEN-LAST:event_EditGroupBtnActionPerformed

    private void DeleteGroupBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DeleteGroupBtnActionPerformed
        FLAG1 = false;
        DELETE = true;
           int selectedRow = -1;//αρχικοποίηση μεταβλητής για να μην περιέχει προηγούμενη τιμή επιλογής.
        selectedRow = MusicGroupTable.getSelectedRow();
        if (selectedRow != -1){
            MusicGroupName = String.valueOf(MusicGroupTable.getValueAt(selectedRow, 0));
            MusicGroupManagementForm GroupForm = new MusicGroupManagementForm();
            GroupForm.InsertValuesToForm();
            GroupForm.setVisible(true);
            dispose();
        }
        else
            //Μήνυμα για την περίπτωση που δεν επιλεχθεί κάποιος Καλλιτέχνης.
            ErrorMessage.setText("Πρέπει να επιλέξετε ένα Συγκρότημα από τον παραπάνω πίνακα");

    }//GEN-LAST:event_DeleteGroupBtnActionPerformed

    /**
     * @param args the command line arguments
     */


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton DeleteGroupBtn;
    private javax.swing.JButton EditGroupBtn;
    private javax.swing.JLabel ErrorMessage;
    private javax.swing.JButton ExitBtn;
    private javax.swing.JButton InsertNewGroupBtn;
    private javax.swing.JTable MusicGroupTable;
    private javax.persistence.EntityManager Radiostation_ProjectPUEntityManager;
    private java.util.List<Radiostation_POJOS.Artist> artistList;
    private java.util.List<Radiostation_POJOS.Artist> artistList1;
    private java.util.List<Radiostation_POJOS.Artist> artistList2;
    private javax.persistence.Query artistQuery;
    private javax.persistence.Query artistQuery1;
    private javax.persistence.Query artistQuery2;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration//GEN-END:variables
}
